home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / ConversionScan.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  8.3 KB  |  252 lines

  1. package com.extensibility.xml;
  2.  
  3. import com.extensibility.util.FilteredEnumerator;
  4. import com.extensibility.xml.dt.DataTypeIntf;
  5. import com.extensibility.xml.dt.Facet;
  6. import java.text.Format;
  7. import java.text.MessageFormat;
  8. import java.util.Enumeration;
  9. import java.util.MissingResourceException;
  10. import java.util.ResourceBundle;
  11. import java.util.Vector;
  12.  
  13. public class ConversionScan implements ConversionErrors {
  14.    private SchemaIntf schema;
  15.    private String target;
  16.    private Vector warnings;
  17.    private SchemaFlavorIntf flavor;
  18.    private static ResourceBundle res;
  19.  
  20.    public ConversionScan(SchemaIntf var1, String var2) {
  21.       this.schema = var1;
  22.       this.target = var2;
  23.       this.warnings = new Vector();
  24.       this.flavor = FlavorRegistry.getDefaultRegistry().createFlavor(var1, var2);
  25.    }
  26.  
  27.    public static void setMessageBundle(ResourceBundle var0) {
  28.       res = var0;
  29.    }
  30.  
  31.    public String getMessage(int var1) {
  32.       return this.getMessage(var1, (String)null);
  33.    }
  34.  
  35.    public String getMessage(int var1, String var2) {
  36.       return this.getMessage(var1, var2, (String)null);
  37.    }
  38.  
  39.    public String getMessage(String var1, String var2) {
  40.       return this.getMessage(0, var2, var1);
  41.    }
  42.  
  43.    public String getMessage(String var1) {
  44.       return this.getMessage(0, (String)null, var1);
  45.    }
  46.  
  47.    public String getMessage(int var1, String var2, String var3) {
  48.       String var5 = null;
  49.  
  50.       String var4;
  51.       try {
  52.          if (var3 == null) {
  53.             var5 = (new Integer(var1)).toString();
  54.          } else {
  55.             var5 = var3;
  56.          }
  57.  
  58.          if (res == null) {
  59.             throw new MissingResourceException("", "", "");
  60.          }
  61.  
  62.          var4 = res.getString(var5);
  63.       } catch (MissingResourceException var8) {
  64.          return var5;
  65.       }
  66.  
  67.       MessageFormat var6 = new MessageFormat(var4);
  68.       String[] var7 = new String[]{var2 != null ? var2 : ""};
  69.       var4 = ((Format)var6).format(var7);
  70.       return var4;
  71.    }
  72.  
  73.    public Enumeration getUsedBy(InternalPEDeclaration var1) {
  74.       return new FilteredEnumerator(this.schema.getDeclarations(), new 1(var1, (ConversionScan)null));
  75.    }
  76.  
  77.    private void checkFacets(BaseDeclaration var1, DataTypeIntf var2) {
  78.       if (var2.hasFacet(Facet.FACET_DECIMALS_NAME) && !this.flavor.isSupported("GESTALT_FACET_DECIMALS")) {
  79.          this.addWarning(var1, this.getMessage(104, Facet.FACET_DECIMALS_NAME));
  80.       }
  81.  
  82.       if (var2.hasFacet(Facet.FACET_DIGITS_NAME) && !this.flavor.isSupported("GESTALT_FACET_DIGITS")) {
  83.          this.addWarning(var1, this.getMessage(104, Facet.FACET_DIGITS_NAME));
  84.       }
  85.  
  86.       if (var2.hasFacet(Facet.FACET_MIN_NAME) && !this.flavor.isSupported("GESTALT_FACET_MIN")) {
  87.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MIN_NAME));
  88.       }
  89.  
  90.       if (var2.hasFacet(Facet.FACET_MAX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAX")) {
  91.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MAX_NAME));
  92.       }
  93.  
  94.       if (var2.hasFacet(Facet.FACET_MAXEX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAXEX")) {
  95.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MAXEX_NAME));
  96.       }
  97.  
  98.       if (var2.hasFacet(Facet.FACET_MINEX_NAME) && !this.flavor.isSupported("GESTALT_FACET_MINEX")) {
  99.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MINEX_NAME));
  100.       }
  101.  
  102.       if (var2.hasFacet(Facet.FACET_MAXLENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_MAXLENGTH")) {
  103.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MAXLENGTH_NAME));
  104.       }
  105.  
  106.       if (var2.hasFacet(Facet.FACET_MINLENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_MINLENGTH")) {
  107.          this.addWarning(var1, this.getMessage(104, Facet.FACET_MINLENGTH_NAME));
  108.       }
  109.  
  110.       if (var2.hasFacet(Facet.FACET_LENGTH_NAME) && !this.flavor.isSupported("GESTALT_FACET_LENGTH")) {
  111.          this.addWarning(var1, this.getMessage(104, Facet.FACET_LENGTH_NAME));
  112.       }
  113.  
  114.       if (var2.hasFacet(Facet.FACET_ENCODING_NAME) && !this.flavor.isSupported("GESTALT_FACET_ENCODING")) {
  115.          this.addWarning(var1, this.getMessage(104, Facet.FACET_ENCODING_NAME));
  116.       }
  117.  
  118.       if (var2.hasFacet(Facet.FACET_PERIOD_NAME) && !this.flavor.isSupported("GESTALT_FACET_PERIOD")) {
  119.          this.addWarning(var1, this.getMessage(104, Facet.FACET_PERIOD_NAME));
  120.       }
  121.  
  122.       if (var2.hasFacet(Facet.FACET_PATTERN_NAME) && !this.flavor.isSupported("GESTALT_FACET_PATTERN")) {
  123.          this.addWarning(var1, this.getMessage(104, Facet.FACET_PATTERN_NAME));
  124.       }
  125.  
  126.    }
  127.  
  128.    public void scan() {
  129.       this.warnings = new Vector();
  130.       if (this.schema != null && this.flavor != null) {
  131.          if (!this.flavor.getFlavorName().equals(this.schema.getFlavorName())) {
  132.             for(int var1 = 0; var1 < this.schema.getCount(); ++var1) {
  133.                BaseDeclaration var2 = this.schema.getIndDeclaration(var1);
  134.                if (!this.flavor.isSupported(var2.getClass())) {
  135.                   boolean var3 = false;
  136.                   if (var2.getClass() == Class.forName("com.extensibility.xml.InternalPEDeclaration")) {
  137.                      InternalPEDeclaration var4 = (InternalPEDeclaration)var2;
  138.                      if (var4.getContentModel() != null && this.flavor.isSupported("GESTALT_REUSABLE_CONTENTMODEL")) {
  139.                         var3 = true;
  140.                      } else if (var4.getAttributeGroup() != null && this.flavor.isSupported("GESTALT_REUSABLE_ATTRIBUTEGROUP")) {
  141.                         var3 = true;
  142.                      } else {
  143.                         Enumeration var5 = this.getUsedBy((InternalPEDeclaration)var2);
  144.  
  145.                         while(var5.hasMoreElements()) {
  146.                            BaseDeclaration var6 = (BaseDeclaration)var5.nextElement();
  147.                            this.addWarning(var6, this.getMessage(101, var2.getName()), 1);
  148.                         }
  149.                      }
  150.                   }
  151.  
  152.                   if (this.flavor.isSupported("GESTALT_MULTI_INSTANCE_MODULES") && var2.getClass() == Class.forName("com.extensibility.xml.ExternalSubset")) {
  153.                      var3 = true;
  154.                   }
  155.  
  156.                   if (!var3) {
  157.                      this.addWarning(var2, this.getMessage(100, this.getMessage(var2.getClassName())));
  158.                   }
  159.                }
  160.  
  161.                if (var2.getClass() == Class.forName("com.extensibility.xml.AttributeDeclaration")) {
  162.                   AttributeDeclaration var8 = (AttributeDeclaration)var2;
  163.                   if (var8.isGlobal() && !this.flavor.isSupported("GESTALT_GLOBAL_ATTRS")) {
  164.                      this.addWarning(var8, this.getMessage(102, ((BaseDeclaration)var8).getName()));
  165.                   }
  166.  
  167.                   if (!var8.isGlobal() && !var8.isReference() && this.flavor.isSupported("GESTALT_FORBID_LOCAL_ATTRS")) {
  168.                      this.addWarning(var8, this.getMessage(103, ((BaseDeclaration)var8).getName()), 0);
  169.                   }
  170.  
  171.                   this.checkFacets(var8, var8.getDataType());
  172.                }
  173.  
  174.                if (var2.getClass() == Class.forName("com.extensibility.xml.DataTypeDeclaration")) {
  175.                   DataTypeDeclaration var9 = (DataTypeDeclaration)var2;
  176.                   this.checkFacets(var9, var9.getDataType());
  177.                }
  178.  
  179.                ContentModel var10 = null;
  180.                if (var2.getClass() == Class.forName("com.extensibility.xml.ElementDeclaration")) {
  181.                   var10 = ((ElementDeclaration)var2).getEffectiveModel();
  182.                   if (var10 != null && ((ElementDeclaration)var2).getSuperType() != null && !this.flavor.isSupported("GESTALT_EXTENDS")) {
  183.                      String var11 = ((ElementDeclaration)var2).getSuperType().getName();
  184.                      this.addWarning(var2, this.getMessage(105, var11));
  185.                   }
  186.                }
  187.  
  188.                if (var2.getClass() == Class.forName("com.extensibility.xml.InternalPEDeclaration")) {
  189.                   var10 = ((InternalPEDeclaration)var2).getContentModel();
  190.                }
  191.  
  192.                if (var10 != null) {
  193.                   if (!var10.isOpen() && !this.flavor.isSupported("GESTALT_OPEN_CONTENT")) {
  194.                      this.addWarning(var2, this.getMessage(106, var2.getName()));
  195.                   }
  196.  
  197.                   if ((var10.isMixed() || var10.isAny()) && this.flavor.isSupported("GESTALT_FORBID_ANY_AND_MIXED")) {
  198.                      this.addWarning(var2, this.getMessage(107, var2.getName()));
  199.                   }
  200.  
  201.                   Object var12 = null;
  202.                   if (var10.getRootGroup() != null) {
  203.                      ContentModelTermEnum var13 = var10.getRootGroup().getTerms(true);
  204.  
  205.                      while(var13.hasMoreElements()) {
  206.                         ContentModelTerm var14 = var13.nextContentModelTerm();
  207.                         if (var14 != null) {
  208.                            String var15 = var14.getOccuranceAsString(true, true);
  209.                            if (var15 != null && var15.length() > 1 && !this.flavor.isSupported("GESTALT_MIN_MAX_OCCURS")) {
  210.                               this.addWarning(var2, this.getMessage(108, var14.getTerm()));
  211.                            }
  212.  
  213.                            if (var14.getLocalTag() != null && !this.flavor.isSupported("GESTALT_LOCAL_TAG")) {
  214.                               this.addWarning(var2, this.getMessage(109, var14.getLocalTag()));
  215.                            }
  216.  
  217.                            if (!this.flavor.isSupported("GESTALT_TYPE_IN_CONTENT_MODEL")) {
  218.                               TypeRef var7 = var14.getTermRef();
  219.                               if (var7 != null) {
  220.                               }
  221.                            }
  222.                         }
  223.                      }
  224.                   }
  225.                }
  226.             }
  227.  
  228.          }
  229.       }
  230.    }
  231.  
  232.    public Vector getWarnings() {
  233.       return this.warnings;
  234.    }
  235.  
  236.    private void addWarning(BaseDeclaration var1, int var2, String var3, int var4) {
  237.       this.warnings.addElement(new DeclError(var1, new ParserException(var2, var3, var4)));
  238.    }
  239.  
  240.    private void addWarning(BaseDeclaration var1, int var2, String var3) {
  241.       this.warnings.addElement(new DeclError(var1, new ParserException(var2, var3)));
  242.    }
  243.  
  244.    private void addWarning(BaseDeclaration var1, String var2) {
  245.       this.warnings.addElement(new DeclError(var1, new ParserException(999, var2)));
  246.    }
  247.  
  248.    private void addWarning(BaseDeclaration var1, String var2, int var3) {
  249.       this.warnings.addElement(new DeclError(var1, new ParserException(999, var2, var3)));
  250.    }
  251. }
  252.